home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / Yahoo Cinema (ES).ifs < prev    next >
Text File  |  2005-04-03  |  13KB  |  442 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=Andrea Cristaudo (achris@tiscalinet.it) & folgui (folgui@bigfoot.com)
  8. Title=Yahoo!Cinema Spain
  9. Description=Movie importation script for Yahoo!Cinema Spain
  10. Site=http://es.movies.yahoo.com
  11. Language=ES
  12. Version=1.2 (30 Mar 2005)
  13. Requires=3.5.0
  14. Comments=Updated by folgui for Spanish Database Support and more info importing. Reported/fixed bug by enriquevagu, thanks!|
  15. License=This program is free software; you can redistribute it and/or modify it under the  terms of the GNU General Public License as published by the Free Software Foundation;  either version 2 of the License, or (at your option) any later version. |
  16. GetInfo=1
  17.  
  18. [Options]
  19. LargePic=1|1|0=It imports default (small) pic|1=It imports a larger pic
  20.  
  21. ***************************************************)
  22.  
  23. program YahooCinema;
  24. var
  25. MovieName: string;
  26. TheMovieAddress: string;
  27.  
  28. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  29. var
  30. i: Integer;
  31. begin
  32. result := -1;
  33. if StartAt < 0 then
  34.   StartAt := 0;
  35. for i := StartAt to List.Count-1 do
  36.   if Pos(Pattern, List.GetString(i)) <> 0 then
  37.   begin
  38.    result := i;
  39.    Break;
  40.   end;
  41. end;
  42.  
  43. function TextBetween(var S: string; StartTag: string; EndTag: string): string;
  44. var
  45.   InitialPos: Integer;
  46. begin
  47.   InitialPos := Pos(StartTag, S);
  48.   Delete(S, 1, InitialPos + Length(StartTag) - 1);
  49.   InitialPos := Pos(EndTag, S);
  50.   result := copy(S, 1, InitialPos - 1);
  51.   Delete(S, 1, InitialPos + 1);
  52. end;
  53.  
  54. procedure AnalyseLargePicPage(Address: string);
  55. var
  56. Page: TStringList;
  57. LineNr: integer;
  58. Line: string;
  59. ImageURL: string;
  60. begin
  61. Page := TStringList.Create;
  62. Page.Text := GetPage(Address);
  63. LineNr := FindLine('<img src="http://eur.news1.yimg.com/eur.yimg.com/', Page, 0);
  64. If LineNr <> -1 then
  65.  begin
  66.   Line := Page.GetString(LineNr);
  67.   ImageURL := TextBetween (Line, '<img src="', '"');
  68.   GetPicture (ImageURL);
  69.  end
  70. Page.Free;
  71. end;
  72.  
  73. procedure AnalyzePage(Address: string);
  74. var
  75. Page: TStringList;
  76. LineNr: integer;
  77. BeginPos: integer;
  78. begin
  79. Page := TStringList.Create;
  80. Page.Text := GetPage(Address);
  81. LineNr := FindLine('<font face=arial,helvetica size=+1><b>Resultados de b·squeda</b></font>', Page, 0);
  82. if LineNr = -1 then
  83. begin
  84.   SetField(fieldURL, Address);
  85.   AnalyzeMoviePage(Page);
  86. end
  87. else
  88. begin
  89.   PickTreeClear;
  90.   AddMoviesTitles(Page);
  91.   if TheMovieAddress='' then
  92.   begin
  93.    if PickTreeExec(Address) then
  94.    begin
  95.     SetField(fieldURL, Address);
  96.     Page.Text := GetPage(Address);
  97.     AnalyzeMoviePage(Page);
  98.    end;
  99.   end
  100.   else
  101.   begin
  102.    SetField(fieldURL, TheMovieAddress);
  103.    Page.Text := GetPage(TheMovieAddress);
  104.    AnalyzeMoviePage(Page);
  105.   end;
  106. end;
  107. Page.Free;
  108. end;
  109.  
  110. procedure AnalyzeMoviePage(Page: TStringList);
  111. var
  112.  Fine: Integer;
  113.  EndActors: Integer;
  114.  EndProducers: Integer;
  115.  EndMusics: Integer;
  116.  EndDirectors: Integer;
  117.  EndPhotographers: Integer;
  118.  EndWriters: Integer;
  119.  EndRating: Integer;
  120.  strActors: string;
  121.  strComments: string;
  122.  strProducers: string;
  123.  strMusics: string;
  124.  strDirectors: string;
  125.  strPhotographers: string;
  126.  strWriters: string;
  127.  Line: string;
  128.  ImageURL: string;
  129.  strTemp: string;
  130.  LineNr: Integer;
  131.  BeginPos, EndPos: Integer;
  132.  Field: integer;
  133.  irate: integer;
  134. begin
  135. Page.Text := StringReplace(Page.Text, ' ', '');
  136. Fine := 0;
  137.   LineNr := FindLine('<FONT color=white face="arial, helvetica"><b>', Page, 0);
  138. if LineNr > -1 then
  139. begin
  140.   //Translated Title
  141.   Line := Page.GetString(LineNr);
  142.   HTMLRemoveTags(Line);
  143.   Line := StringReplace(Line,'"','');
  144.   SetField(fieldTranslatedTitle,Line);
  145.  
  146.   repeat
  147.    LineNr := LineNr + 1;
  148.    Line := Page.GetString(LineNr);
  149.    //GetPicture of Movie
  150.    if GetOption('LargePic') = 0 then
  151.     // Import Small Picture
  152.     begin
  153.       if pos('html"><img src="http:', Line) <> 0 then
  154.        begin
  155.         Delete(Line, 1, pos('<img ', Line) + 9);
  156.         Delete(Line, pos('" border=', Line), pos('</a>', Line) + 1);
  157.         GetPicture(Line);
  158.        end
  159.     end
  160.    // Import Large Picture
  161.    else
  162.     begin
  163.       if pos('Agrandar la imagen</a>', Line) <> 0 then
  164.        begin
  165.         ImageURL := TextBetween(Line, '<a href="', '">Agrandar la imagen</a>');
  166.         AnalyseLargePicPage('http://es.movies.yahoo.com' + ImageURL);
  167.       end
  168.     end
  169.    //Original Title
  170.    if pos('<b>Tφtulo original:</b>', Line) <> 0 then
  171.     begin
  172.      HTMLRemoveTags(Line);
  173.      Delete(Line, 1, 16);
  174.      Line := StringReplace(Line,'"','');
  175.      SetField(fieldOriginalTitle, Line);
  176.     end
  177.    //Country and Year
  178.    else if pos('<b>Paφs y a±o:</b>',Line) <> 0 then
  179.     begin
  180.      LineNr := LineNr + 1;
  181.      Line := Page.GetString(LineNr);
  182.      SetField(fieldCountry, Line);
  183.      LineNr := LineNr + 1;
  184.      Line := Page.GetString(LineNr);
  185.      SetField(fieldYear, copy(Line, 2, 4));
  186.     end
  187.    //Category and Length
  188.    else if pos('<b>GΘnero:</b>', Line) <> 0 then
  189.     begin
  190.      HTMLRemoveTags(Line);
  191.      Delete(Line, 1, 7);
  192.      SetField(fieldCategory, Line);
  193.      LineNr := LineNr + 1;
  194.      Line := Page.GetString(LineNr);
  195.      HTMLRemoveTags(Line);
  196.      Delete(Line, 1, 9);
  197.      SetField(fieldLength, copy(Line, 1, 3));
  198.      If GetField(fieldLength) = '' then
  199.       SetField(fieldLength, copy(Line, 1, 2));
  200.     end
  201.    //Rating
  202.    else if pos('<b>Crφtica:</b>', Line) <> 0 then
  203.     begin
  204.      irate := 0;
  205.      LineNr := LineNr + 1;
  206.      Line := Page.GetString(LineNr);
  207.      EndRating := pos('<img src="http://eur.i1.yimg.com/eur.yimg.com/i/de/mo/1sg.gif" width=10 height=9>', Line);
  208.      while (EndRating = 0) and (irate < 5) do
  209.       begin
  210.        irate := irate + 1;
  211.        LineNr := LineNr + 1;
  212.        Line := Page.GetString(LineNr);
  213.        EndRating := pos('<img src="http://eur.i1.yimg.com/eur.yimg.com/i/de/mo/1sg.gif" width=10 height=9>', Line);
  214.       end
  215.      SetField(fieldRating, IntToStr(irate*2));
  216.     end
  217.    //Description
  218.    else if pos('<b>Sinopsis:</b>', Line) <> 0 then
  219.     begin
  220.      LineNr := LineNr + 2;
  221.      Line := Page.GetString(LineNr);
  222.      HtmlRemoveTags(Line);
  223.      SetField(fieldDescription, Line);
  224.     end
  225.    //List of Actors
  226.    else if pos('<b>Actor / Actriz:</b>', Line) <> 0 then
  227.     begin
  228.      strActors := '';
  229.      LineNr := LineNr + 2;
  230.      Line := Page.GetString(LineNr);
  231.      EndActors := pos('</font></td></tr>', Line);
  232.      while EndActors = 0 do
  233.       begin
  234.        HtmlRemoveTags(Line);
  235.        if strActors = '' then
  236.         strActors := Line
  237.        else
  238.         strActors := strActors + ' ' + Line;
  239.        LineNr := LineNr + 1;
  240.        Line := Page.GetString(LineNr);
  241.        EndActors := pos('</font></td></tr>', Line);
  242.       end
  243.      SetField(fieldActors, strActors);
  244.     end
  245.    else if pos('Montador:</b>', Line) <> 0 Then
  246.     begin
  247.      LineNr := LineNr + 2;
  248.      Line := Page.GetString(LineNr);
  249.      HtmlRemoveTags(Line);
  250.      strComments := 'Montaje: ' + Line + #13#10;
  251.     end
  252.    // Music for Comments
  253.    else if pos('<b>Musica:</b>', Line) <> 0 then
  254.     begin
  255.      strMusics := '';
  256.      LineNr := LineNr + 2;
  257.      Line := Page.GetString(LineNr);
  258.      EndMusics := pos('</font></td></tr>', Line);
  259.      while EndMusics = 0 do
  260.       begin
  261.        HtmlRemoveTags(Line);
  262.        if strMusics = '' then
  263.         strMusics := Line
  264.        else
  265.         strMusics := strMusics + ' ' + Line;
  266.        LineNr := LineNr + 1;
  267.        Line := Page.GetString(LineNr);
  268.        EndMusics := pos('</font></td></tr>', Line);
  269.       end
  270.      strComments := strComments + 'M·sica: ' + strMusics + #13#10;
  271.     end
  272.    // Aditional Music Author for Comments
  273.    else if pos('<b>Compositor (m·sica adicional):</b>', Line) <> 0 then
  274.     begin
  275.      LineNr := LineNr + 2;
  276.      Line := Page.GetString(LineNr);
  277.      HtmlRemoveTags(Line);
  278.      strComments := strComments + 'Compositor: ' + Line + #13#10;
  279.     end
  280.    //Director
  281.    else if pos('<b>Director:</b>', Line) <> 0 then
  282.     begin
  283.      strDirectors := '';
  284.      LineNr := LineNr + 2;
  285.      Line := Page.GetString(LineNr);
  286.      EndDirectors := pos('</font></td></tr>', Line);
  287.      while EndDirectors = 0 do
  288.       begin
  289.        HtmlRemoveTags(Line);
  290.        if strDirectors = '' then
  291.         strDirectors := Line
  292.        else
  293.         strDirectors := strDirectors + ' ' + Line;
  294.        LineNr := LineNr + 1;
  295.        Line := Page.GetString(LineNr);
  296.        EndDirectors := pos('</font></td></tr>', Line);
  297.       end
  298.      SetField(fieldDirector, strDirectors);
  299.     end
  300.    //Photography for Comments
  301.    else if pos('<b>Fotografφa:</b>', Line) <> 0 then
  302.     begin
  303.      strPhotographers := '';
  304.      LineNr := LineNr + 2;
  305.      Line := Page.GetString(LineNr);
  306.      EndPhotographers := pos('</font></td></tr>', Line);
  307.      while EndPhotographers = 0 do
  308.       begin
  309.        HtmlRemoveTags(Line);
  310.        if strPhotographers = '' then
  311.         strPhotographers := Line
  312.        else
  313.         strPhotographers := strPhotographers + ' ' + Line;
  314.        LineNr := LineNr + 1;
  315.        Line := Page.GetString(LineNr);
  316.        EndPhotographers := pos('</font></td></tr>', Line);
  317.       end
  318.      strComments := strComments + 'Fotografφa: ' + strPhotographers + #13#10;
  319.     end
  320.    //Screenplay Writer for Comments
  321.    else if (pos('<b>Guionista:</b>', Line) <> 0) Or (pos('<b>Gui≤n', Line) <> 0) then
  322.     begin
  323.      strWriters := '';
  324.      LineNr := LineNr + 2;
  325.      Line := Page.GetString(LineNr);
  326.      EndWriters := pos('</font></td></tr>', Line);
  327.      while EndWriters = 0 do
  328.       begin
  329.        HtmlRemoveTags(Line);
  330.        if strWriters = '' then
  331.         strWriters := Line
  332.        else
  333.         strWriters := strWriters + ' ' + Line;
  334.        LineNr := LineNr + 1;
  335.        Line := Page.GetString(LineNr);
  336.        EndWriters := pos('</font></td></tr>', Line);
  337.       end
  338.      strComments := strComments + 'Guionista: ' + strWriters + #13#10;
  339.     end
  340.    //Producer
  341.    else if (pos('<b>Producci≤n:</b>', Line) <> 0) Or (pos('<b>Productor', Line) <> 0) then
  342.     begin
  343.      strProducers := '';
  344.      LineNr := LineNr + 2;
  345.      Line := Page.GetString(LineNr);
  346.      EndProducers := pos('</font></td></tr>', Line);
  347.      while EndProducers = 0 do
  348.       begin
  349.        HtmlRemoveTags(Line);
  350.        if strProducers = '' then
  351.         strProducers := Line
  352.        else
  353.         strProducers := strProducers + ' ' + Line;
  354.        LineNr := LineNr + 1;
  355.        Line := Page.GetString(LineNr);
  356.        EndProducers := pos('</font></td></tr>', Line);
  357.       end
  358.      SetField(fieldProducer, strProducers);
  359.     end
  360.    // More Comments
  361.    else if pos('<b>Notas de Producci≤n</b>', Line) <> 0 then
  362.     begin
  363.      LineNr := LineNr + 2;
  364.      Line := Page.GetString(LineNr);
  365.      strTemp := TextBetween(Line, '<FONT face=arial size=-1>', '<a href="');
  366.      HtmlDecode(strTemp);
  367.      strComments := strComments + '------------------------------';
  368.      strComments := strComments + #13#10 + strTemp;
  369.     end
  370.    // More Comments
  371.    else if pos('<b>Crφtica</b>', Line) <> 0 then
  372.     begin
  373.      LineNr := LineNr + 2;
  374.      Line := Page.GetString(LineNr);
  375.      strTemp := TextBetween(Line, '<FONT face=arial size=-1>', '<a href="');
  376.      HtmlDecode(strTemp);
  377.      strComments := strComments + '------------------------------';
  378.      strComments := strComments + #13#10 + strTemp;
  379.     end
  380.    else if Line = '</html>' then
  381.     Fine := 1;
  382.   until Fine = 1;
  383.   SetField(fieldComments, strComments);
  384. end;
  385. //DisplayResults;
  386. end;
  387.  
  388. procedure AddMoviesTitles(Page: TStringList);
  389. var
  390. LineNr: Integer;
  391. NewLineNr: Integer;
  392. Line: string;
  393. MovieTitle, MovieAddress: string;
  394. BeginPos, EndPos: Integer;
  395. begin
  396. TheMovieAddress := '*';
  397. LineNr := 0;
  398. LineNr := FindLine('<font face=arial,helvetica><b>Resultado de pelφculas</b>',Page,LineNr);
  399. LineNr := LineNr + 3;
  400. PickTreeAdd('Resultados encontrados:','');
  401. while LineNr > 2 do
  402. begin
  403.   Line := Page.GetString(LineNr);
  404.   BeginPos := pos('<li><a href="',Line)+13;
  405.   EndPos := pos('">',Line);
  406.   MovieAddress := copy(Line,BeginPos,EndPos-BeginPos);
  407.   Delete(Line,1,EndPos + 1);
  408.   BeginPos := 1;
  409.   EndPos := -1;
  410.   MovieTitle := Line;
  411.   HTMLRemoveTags(MovieTitle);
  412.   HTMLDecode(Movietitle);
  413.   PickTreeAdd(MovieTitle, MovieAddress);
  414.  
  415.   NewLineNr := FindLine('<li><a href="',Page,LineNr+1);
  416.   if NewLineNr <> (LineNr + 1) then
  417.    LineNr := 2
  418.   else
  419.    LineNr := NewLineNr;
  420.  
  421.   if TheMovieAddress='*' then
  422.    TheMovieAddress := MovieAddress
  423.   else
  424.    TheMovieAddress := '';
  425. end;
  426. if TheMovieAddress='*' then TheMovieAddress := '';
  427. end;
  428.  
  429. begin
  430. if CheckVersion(3,5,0) then
  431. begin
  432.   MovieName := GetField(fieldTranslatedTitle);
  433.   if MovieName = '' then
  434.    MovieName := GetField(fieldOriginalTitle);
  435.   if Input('Yahoo!Cinema Espa±a', 'Introduce el tφtulo de la pelφcula (enter movie title):', MovieName) then
  436.   begin
  437.    AnalyzePage('http://es.search.movies.yahoo.com/search/movies_db_es?mt='+UrlEncode(MovieName));
  438.   end;
  439. end else
  440.   ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
  441. end.
  442.